package com.mydemo.likedy.Service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mydemo.likedy.pojo.dto.FindPasswordDTO;
import com.mydemo.likedy.pojo.dto.UpdateUserDTO;
import com.mydemo.likedy.pojo.entity.User;
import com.mydemo.likedy.pojo.entity.video.Type;
import com.mydemo.likedy.pojo.vo.BasePage;
import com.mydemo.likedy.pojo.vo.UserVO;

import java.util.Collection;
import java.util.List;
import java.util.Set;

public interface UserService extends IService<User> {
    /**
     * 找回密码
     *
     * @param findPasswordDTO
     * @return
     */
    Boolean findPassword(FindPasswordDTO findPasswordDTO);


    void updateUser(UpdateUserDTO updateUserDTO);

    /**
     * 获取用户信息:
     * 1.用户基本信息
     * 2.关注数量
     * 3.粉丝数量
     *
     * @param userId 用户id
     * @return
     */
    UserVO getInfo(Long userId);

    /**
     * 获取用户搜索记录
     * @return 搜索的值
     */
    Collection<String> searchHistory(Long userId);

    /**
     * 添加搜索记录
     * @param userId
     * @param search
     */
    void addSearchHistory(Long userId, String search);

    List<User> list(Collection<Long> userIds);

    /**
     * 订阅分类
     * @param typeIds
     */
    void subscribe(Set<Long> typeIds);

    Collection<Type> listNoSubscribeType(Long aLong);

    /**
     * 获取订阅分类
     * @param userId
     * @return
     */
    Collection<Type> listSubscribeType(Long userId);


    /**
     * 关注/取关
     * @param followsUserId
     * @return
     */
    boolean follows(Long followsUserId);
    /**
     * 获取粉丝
     * @param userId
     * @param basePage
     * @return
     */
    Page<User> getFans(Long userId, BasePage basePage);

    /**
     * 删除搜索记录
     * @param userId
     */
    void deleteSearchHistory(Long userId);

}